package cn.tomoki.adapters;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import cn.tomoki.beans.ItemBean;
import cn.tomoki.myapplication.R;

import java.util.List;
//出库历史recycleView对应的适配器
public class ListViewAdapter extends RecyclerView.Adapter<ListViewAdapter.InnerHolder> {

    private final List<ItemBean> mData;
    private OnItemClickListener mOnItemClickListener;

    public ListViewAdapter(List<ItemBean> data){
        this.mData = data;
    }

    @NonNull
    /**
     * 这个方法用于创建条目view
     */
    @Override
    public InnerHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        //传进去的这个view其实就是条目的界面
        //两个步骤
        //1、拿到view
        //2、创建InnerHolder
        View view = View.inflate(parent.getContext(), R.layout.item_out_histroy_list_view, null);
        return new InnerHolder(view);
    }

    /**
     * 这个方法是用于绑定holder的，一般用来设置数据
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder (@NonNull InnerHolder holder, int position) {
        //在这里设置数据
        holder.setData(mData.get(position),position);
    }

    /**
     * 返回条目的个数
     * @return
     */
    @Override
    public int getItemCount() {
        if (mData != null){
            return mData.size();
        }
        return 0;
    }

    /**
     * 编写回调的步骤
     * 1、创建一个接口
     * 2、定义接口内部的方法
     * 3、提供设置接口的放法（其实是外部实现）
     * 4、接口方法的调用
     */
    //提供设置接口的方法
    public void setOnItemClickListener(OnItemClickListener listener){
        this.mOnItemClickListener = listener;
    }
    //创建一个接口，定义内部的方法
    public interface OnItemClickListener{
        void onItemClick(int position);
    }

    public class InnerHolder extends RecyclerView.ViewHolder{
        private ImageView outNext;//没有退还时显示图片
        private TextView outTimeText;
        private TextView outNameText;
        private TextView outNumberText;
        private TextView tv_next;   //退还状态显示
        private int mPosition;

        public InnerHolder(View itemView){
            super(itemView);
            //找到条目的控件
            outNext = (ImageView) itemView.findViewById(R.id.list_next);
            outTimeText = (TextView) itemView.findViewById(R.id.list_outTime);
            outNameText = (TextView) itemView.findViewById(R.id.list_outName);
            outNumberText = (TextView) itemView.findViewById(R.id.list_outNumber);
            tv_next = (TextView) itemView.findViewById(R.id.tv_next);

            //创建条目的时候调用监听？？
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(mOnItemClickListener != null){
                        mOnItemClickListener.onItemClick(mPosition);
                    }
                }
            });
        }

        /**
         * 这个方法用于设置数据
         * @param itemBean
         */
        //为了实现监听，后期加了形参position以及对应的实参mPosition
        public void setData(ItemBean itemBean,int position) {
            this.mPosition = position;
            //开始设置数据
            outTimeText.setText(itemBean.time);
            outNameText.setText(itemBean.name);
            outNumberText.setText(itemBean.number);
            if(itemBean.getBack().equals("1")){ //如果退还,显示已退还
                outNext.setVisibility(View.GONE);
                tv_next.setVisibility(View.VISIBLE);
            }else{  //如果没退换，正常显示
                tv_next.setVisibility(View.GONE);
                outNext.setVisibility(View.VISIBLE);
            }

        }
    }
}
